EC2インスタンスプロファイルがSSM機能をDENYしていてもSSM Default Host Management ConfigurationのIAMロールにフォールバックします
2023年の2月にSSM Default Host Management Configuration(SSM DHMC)という機能がリリースされ、これまでEC2のインスタンスプロファイルでのみ設定可能だったSSM権限をSSMでもデフォルトとして設定可能になりました。
本機能発表時のしばたのブログ解説にもあるように、SSMのデフォルトロールは、EC2インスタンスプロファイルのフォールバックとして機能します。
このフォールバックは
- インスタンスプロファイルが設定されていない
- インスタンスプロファイルでSSM系の権限がALLOWされていない
といったケースだけでなく
- インスタンスプロファイルでSSM系の機能がDENYされている
といったケースも含みます。
IAM ポリシーでよく見かける評価フローでは明示的なDENYがあれば最優先されて評価を打ち切ります。
※ 引用元
本機能の場合、EC2インスタンスプロファイルでSSMがDENYされていても、SSMのデフォルトロールにフォールバックするため、ご注意ください。
インスタンスプロファイルのロールはEC2を信頼できるエンティティとして許可し、SSM DHMCのロールはSSMを信頼できるエンティティとして許可し、ロールそのものも異なるため、このように動作しているものと思われます。
SSMを許可したくないEC2インスタンスはどうすれば良い?
SSM DHMCの最大のメリットはアカウント・組織レベルで一括してEC2のSSM機能を有効化できることです。
EC2インスタンスの中には、SSMを有効にしたくないインスタンスも含まれているでしょう。
そのようなインスタンスに対しては、インスタンスプロファイルで ssm:UpdateInstanceInformation
を許可しましょう。
このアクションが許可されていると、SSM DHMCで設定したIAMロールにフォールバックしなくなります。
Before you begin, if you have instance profiles attached to your Amazon EC2 instances, remove any permissions that allow the
ssm:UpdateInstanceInformation
operation. The SSM Agent attempts to use instance profile permissions before using the Default Host Management Configuration permissions. If you allow thessm:UpdateInstanceInformation
operation in your instance profiles, the instance will not use the Default Host Management Configuration permissions.